#!/usr/bin/python
# -*- coding: utf-8 -*-

import pygame
from pygame.locals import *
from pygame.sprite import Sprite

import copy

DEFAULT_ACCEL = [ 3, 3 ]

class GameObject( Sprite ):
    """
    Esta classe representa os elementos atuantes no jogo.
    """
    rect  = None
    image = None
    marea = None
    accel = None
    speed = None
    
    def __init__( self, image, pos, marea ):
        """
        Inicia objeto, lê imagem se necessário.

        marea é a área de movimentação permitida a este objeto. (x, y, w, h)
        """
        Sprite.__init__( self )

        if isinstance( image, str ):
            # Leia a imagem
            image = pygame.image.load( image )

        self.rect  = image.get_rect()
        self.marea = Rect( marea )
        self.accel = copy.copy( DEFAULT_ACCEL )
        self.image = image
        self.speed = [ 0, 0 ]

        self.rect.move_ip( pos )
        self.rect.clamp_ip( self.marea )
    # __init__()



    def update( self, dt ):
        """
        Atualiza a posição do elemento baseado em sua velocidade.

        O movimento é restrito a marea.
        """
        # Move "in place" (move_ip), isto é, move o proprio retângulo
        # ao invés de retornar uma cópia do retângulo movido
        self.rect.move_ip( self.get_speed() )
        # Restringe o movimento a marea.
        self.rect.clamp_ip( self.marea )
    # update()



    def get_speed( self ):
        """
        Retorna a velocidade do objeto.

        Vide Paddle para ver por que é bom usar uma função para isto.
        """
        return self.speed
    # get_speed()

    
    def draw( self, screen ):
        """Desenha o elemento."""
        screen.blit( self.image, self.rect )
    # draw()
# GameObject
